package com.shujia.static_;

import org.junit.Test;

import java.util.Arrays;

public class PersonTest {

    @Test
    public void test2() {
        /*

         */
    }

    @Test
    public void test1() {
        Person zs = new Person();
        Person ls = new Person();
        System.out.println(zs.country); // null
        System.out.println(ls.country);// null

        Person.country = "中国";

        /*
        因为不同的对象静态属性在内存里是共享的, 所以只要其中一个修改了, 其他的对象
        访问的都是最新的值
         */
        System.out.println(zs.country);
        System.out.println(ls.country);

        zs.country = "印度";

        System.out.println(Person.country);
        System.out.println(ls.country);

        /*
        static
        如果方法与调用者无关，则这样的方法通常被声明为类方法，
        由于不需要创建对象就可以调用类方法，从而简化了方法的调用。
        Arrays.sort(arr);
         */
        int[] arr = {1, 2};
        /*
        工具方法, 简化了方法的调用, 跟属性没有关系
         */
        Arrays.sort(arr);

    }

    public static void main(String[] args) {
        // 使用静态成员
        // 类名.静态成员, 推荐方式
        System.out.println(Person.country);
        Person.country = "中国";
        System.out.println(Person.country);

        // 类名.静态方法
        Person.play();

        // 也可使用对象调用静态成员, IDEA没有提示,
        // 就是因为工具不建议我们使用对象调用静态成员
        Person zs = new Person();
        System.out.println(zs.country);
        zs.play();

        Person ls = null;
        // ls.eat();// NullPointerException
        // 可以正常访问
        System.out.println(ls.country);
        ls.play();

    }
}
